<?php
/* 
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/**
 * Descripcion de classPagina
 *
 * @author Jonas Reyes
 */
class Pagina {
    // Atributos de la clase
    public $Logotipo;
    public $Titulo;
    public $NombreAlt;
    public $PiePag;
    public $Cabecera;
    public $UrlJs;          //  <script type="text/javascript" src="resources/jquery_1.2.6/jquery-1.2.6.js"></script>
    public $UrlCss;         //  <link rel="stylesheet" href="css/default.css" type="text/css" media="screen" />
    public $MetaTitle;      //  <meta name="title" content="título del sitio">
    public $MetaKeywords;   //  <Meta Name="Keywords" Content="palabra1, palabra2, palabra3...., palabra N">
    public $MetaDescription;//  <META NAME="description" CONTENT="descripción de nuestra página">
    public $MetaDCLanguage; //  <meta name="DC.Language" SCHEME="RFC1766" CONTENT="Spanish">  <meta http-equiv="Content-Language" content="es">
    public $MetaClassification;// <meta name="classification" content="tourism">
    public $MetaPragma;     //  Solo deribados de NetScape: <META HTTP-EQUIV="Pragma" CONTENT="no-cache/cache">
                            //  para Internet explorer: <META HTTP-EQUIV="Cache-Control" CONTENT="no-cache">
    public $MetaRevisit;    //  <meta name="Revisit" content="X days">
    public $MetaExpires;    //  <Meta HTTP-EQUIV="expires" CONTENT="Mon, dd Jan aaaa hh:mm:ss GMT">
    public $MetaRefresh;    //  <Meta HTTP-EQUIV="Refresh" CONTENT="0;URL=http://www.nuevaurl.com/pagina.htm">
    public $MetaSetCookie;  //  <Meta HTTP-EQUIV="Set-Cookie" CONTENT="cookievalue=xxx;expires=Wednesday, dd-Jan-00 hh:mm:ss GMT; path=/">
    public $MetaMail;       //  <link rev=made href="mailto:micorreo@miservidor.com">.
    public $MetaAuthor;     //  <meta name="author" content="mi nombre">
    public $MetaRobots;     //  <meta name="robots" CONTENT="atributo1 | atributo2 | ">
    public $nombreIframe;
    public $srcIframe;
    public $Iframe="";
    public $UltimoNumCorresp="";


    function __Construct($object="DEFAULT"){
       /**
        * El constructor invocará los metodos setters que se puedan definir de forma predeterminada.
        */
        $formularios=new Formulario();
        $this->UltimoNumCorresp=$formularios->viewNumeroCorrespondencia();
        $this->SetLogotipo("Cabecera.png"); // toda imagen deberá colocarse en la carpeta imagenes. No se puede especificar un URL ni RUTA
        $this->SetNombreAlt("Escudo del Cabildo Metropolitano");
        $this->SetTitulo(".: Comisión de Contraloría - Intranet :.");
        $this->SetPiePag("Comisión de Contraloría 2009 &copy; CopyLeft / JR.:.");
        $this->SetCabecera($this->GetLogotipo(),$this->GetNombreAlt());
        $this->SetUrlCss('resources/css/default.css');
        $this->SetUrlJs("resources/js/jquery.js");
        $this->SetNombreIframe();
        
        if ($object!="DEFAULT") {
            if (is_object($object)) {
                $this->AddClassCss($object);
                $this->AddClassJs($object);
            }else {
                Core::MsgError("ERROR, '$object' no es un parametro válido para"
                    ." el constructor de la clase 'Pagina'. Debe usar un objeto"
                    ." como parámetro.");
                exit;
            }
           }
       
    }

    function __Destruct(){
        
    }

    public function SetIframe($nombreIframe="",$srcIframe=""){
        $this->SetNombreIframe($nombreIframe);
        $this->SetSrcIframe($srcIframe);
        
        $this->Iframe='<iframe src="'.$this->GetSrcIframe().'" width="722" height="480" align="center" class="iframeCentral" id="'.$this->GetNombreIframe().'" name="'.$this->GetNombreIframe().'" scrolling="auto"></iframe>';
        return true;
    }

    public function GetIframe(){
        if ($this->Iframe!="") {
            return $this->Iframe;
        }else {
            return Core::MsgError("Error, para usar el metodo 'GetIframe()' "
                ."debe haber invocado antes el metodo 'SetIframe()'.");
        }
    }

    public function SetNombreIframe($nombreIframe=""){
        if ($nombreIframe=="") {
            $this->nombreIframe="iframePrincipal";
            return true;
        }else {
            $this->nombreIframe=$nombreIframe;
            return true;
        }
        return false;
    }

    public function GetNombreIframe(){
        if ($this->nombreIframe!="") {
            return $this->nombreIframe;
        }else {
            return Core::MsgError("Error, el metodo 'GetNombreIframe()' no "
                ."puede mostrar el nombre del Iframe ya que este no se "
                ."ha definido. Solucione el problema invocando previamente al "
                ."metodo 'SetNombreIframe()'.");
        }
    }

    public function SetSrcIframe($srcIframe=""){
        if ($srcIframe=="") {
            $this->srcIframe="http://www.google.co.ve";
            return true;
        }else {
            $this->srcIframe=$srcIframe;
            return true;
        }
        return false;
    }

    public function GetSrcIframe(){
        if ($this->srcIframe!="") {
            return $this->srcIframe;
        }else {
            return Core::MsgError("Error, el metodo 'GetSrcIframe()' no "
                ."puede mostrar el contenido del Iframe ya que este no se "
                ."ha definido. Solucione el problema invocando previamente al "
                ."metodo 'SetSrcIframe()'.");
        }
    }

    public function Publicar($contenido,$tipoPag="Normal"){

        if ($tipoPag=="Normal") {
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="es-ve">
<head>
  <meta content="text/html; charset=UTF-8"
 http-equiv="content-type" />
  <title><?=$this->GetTitulo();?></title>
  <meta content="Jonas Reyes jonasrey (at) gmail.com" name="author" /><?=$this->GetUrlCss();?>
  <?=$this->GetUrlJs();?>
</head>
<body style="direction: ltr;">
<div class="centrado">

<table id="contenedor">
    <tr>
    <!-- INICIO del CABECERA -->
    <td class="TdCabecera">
        <?=$this->GetCabecera();?>
    </td>
    <!-- FIN del CABECERA -->
    </tr>
    <tr><td class="TdPC"><table class="PanelCentral"><tr>


    <td class="TdIzq"><div class="ColIzq">
    <!-- INICIO de Columna IZQUIERDA -->
    <?=$this->UltimoNumCorresp; ?>
    <h3 class="subTituloMenu">Menu Principal</h3>
    <a target="iframePrincipal" class="enlaceServicios" id="enlaceIrAPrincipal" href="print.default.php" title="Ir a pagina principal de Intranet">Principal</a>
    <a target="iframePrincipal" class="enlaceServicios" id="enlaceSolicitarPermiso" href="print.solicitar_permiso.php" title="Solicitud de Permisos Laborales">Solicitar Permiso</a>
    <a target="iframePrincipal" class='enlaceServicios' id="enlaceGenerarNumCorresp" href='form/motor.formulariospublicos.php?accion=FormGenerarNumeroCorrespondencia' title="Pulse para generar un nuevo numero de correspondencia.">Generar nuevo número de Correspondencia</a>
    <a target="iframePrincipal" class="enlaceServicios" id="enlaceIngresarAdmin" href="print.ingresar_admin.php" title="Interfaz de Acceso a Administracion">Administracion</a>
    <!-- FIN de Columna IZQUIERDA -->
    </div></td>

    <td class="TdCentral"><div class="ColCentral" id="ColCentral">
    <!-- INICIO de Columna CENTRAL -->
    <?php
    echo $contenido;
    ?>
    <!-- FIN de Columna CENTRAL -->
    </div></td></tr>
    </table></td></tr>

    <!-- INICIO del PIE de PAGINA -->
    <tr><td class="TdPie"><?=$this->GetPiePag();?></td></tr>
    <!-- FIN del PIE de PAGINA -->
</table>
</div>
</body>
</html>

<?php
}elseif ($tipoPag=="Iframe") {

  ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="es-ve">
<head>
  <meta content="text/html; charset=UTF-8"
 http-equiv="content-type" />
  <title><?=$this->GetTitulo();?></title>
  <meta content="Jonas Reyes jonasrey (at) gmail.com" name="author" /><?=$this->GetUrlCss();?>
  <?=$this->GetUrlJs();?>
</head>
<body style="direction: ltr;">
<div class="centrado">

<table id="contenedor">
    <tr>
    <!-- INICIO del CABECERA -->
    <td class="TdCabecera">
        <?=$this->GetCabecera();?>
    </td>
    <!-- FIN del CABECERA -->
    </tr>
    <tr><td class="TdPC"><table class="PanelCentral"><tr>
    <td class="TdIzq"><div class="ColIzq">
    <!-- INICIO de Columna IZQUIERDA -->
    <?=$this->UltimoNumCorresp; ?>
    <h3 class="subTituloMenu">Menu Principal</h3>

    <a target="iframePrincipal" class="enlaceServicios" id="enlaceIrAPrincipal" href="print.default.php" title="Ir a pagina principal de Intranet">Principal</a>
    <a target="iframePrincipal" class="enlaceServicios" id="enlaceSolicitarPermiso" href="print.solicitar_permiso.php" title="Solicitud de Permisos Laborales">Solicitar Permiso</a>
    <a target="iframePrincipal" class='enlaceServicios' id="enlaceGenerarNumCorresp" href='form/motor.formulariospublicos.php?accion=FormGenerarNumeroCorrespondencia' title="Pulse para generar un nuevo numero de correspondencia.">Generar nuevo número de Correspondencia</a>
    <a target="iframePrincipal" class="enlaceServicios" id="enlaceIngresarAdmin" href="print.ingresar_admin.php" title="Interfaz de Acceso a Administracion">Administracion</a>

    <!-- FIN de Columna IZQUIERDA -->
    </div></td>

    <td class="TdCentral"><div class="ColCentral" id="ColCentral">
    <!-- INICIO de Columna CENTRAL -->
    <?=$this->GetIframe();?>
    <!-- FIN de Columna CENTRAL -->
    </div></td></tr>
    </table></td></tr>

    <!-- INICIO del PIE de PAGINA -->
    <tr><td class="TdPie"><?=$this->GetPiePag();?></td></tr>
    <!-- FIN del PIE de PAGINA -->
</table>
</div>
</body>
</html>


<?php

}elseif ($tipoPag=="Vacia") {

  ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="es-ve">
<head>
  <meta content="text/html; charset=UTF-8"
 http-equiv="content-type" />
  <title><?=$this->GetTitulo();?></title>
  <meta content="Jonas Reyes jonasrey (at) gmail.com" name="author" /><?=$this->GetUrlCss();?>
  <?=$this->GetUrlJs();?>
</head>
<body style="background-color:#fff;direction: ltr;">
<!--<div class="ColCentral" id="ColCentral">-->
    <!-- INICIO de Columna CENTRAL -->
    <?php
    echo $contenido;
    ?>
    <!--</div>-->
    <!-- FIN de Columna CENTRAL -->
</body>
</html>

<?php

}// Fin de IF discriminador de forma de impresion de pagina

    }// Fin de Metodo Publicar

    public function ArmarPagina(){
        
    }

    public function SetLogotipo($Logo){
        if (Core::ValidacionBasica($Logo)) {
            $this->Logotipo=$Logo;
            return true;
        }else {
            Core::MsgError("Error, el LOGOTIPO introducido no es válido."
                ." Por favor verifique el nombre y extensión especificados y "
                ."vuelva a intentarlo.");
            return false;
        }
        
    }

    public function GetLogotipo(){
        return $this->Logotipo;
    }

    public function SetTitulo($Titulo){
        if (Core::ValidacionBasica($Titulo)) {
            $this->Titulo=$Titulo;
            return true;
        }else {
            Core::MsgError("Error, no puede definir vacio el TITULO de la página.");
            return false;
        }
    }

    public function GetTitulo(){
        return $this->Titulo;
    }

    public function SetNombreAlt($NomAlt){
        if (Core::ValidacionBasica($NomAlt)) {
            $this->NombreAlt=$NomAlt;
            return true;
        }else {
            Core::MsgError("Error, no puede definir vacio el texto "
                    ."ALTERNATIVO del LOGOTIPO.");
            return false;
        }

    }

    public function GetNombreAlt(){
        return $this->NombreAlt;
    }

    public function SetPiePag($Pie){
        if (Core::ValidacionBasica($Pie)) {
            $this->PiePag=$Pie;
            return true;
        }else {
            Core::MsgError("Error, no puede definir vacio el PIE de página.");
            return false;
        }

    }

    public function GetPiePag(){
        return $this->PiePag;
    }

    public function SetCabecera($Logo,$DescLogo){
        if (Core::ValidacionBasica($Logo)) {
            if (Core::ValidacionBasica($DescLogo)) {
                $this->SetLogotipo($Logo);
                $this->SetNombreAlt($DescLogo);
                $this->Cabecera='<img alt="'.$this->GetNombreAlt().'" src="imagenes/'.$this->GetLogotipo().'" />';
                return true;
            }else {
                Core::MsgError("Error, no puede definir vacio el texto "
                    ."ALTERNATIVO del LOGOTIPO.");
                return false;
            }
            
        }else {
            Core::MsgError("Error, no puede definir vacio el LOGOTIPO.");
            return false;
        }

    }

    public function GetCabecera(){
        return $this->Cabecera;
    }
/**
 *
 * @param <type> $js string
 * @return <type> boolean
 * Este metodo permite especificar el url del archivo .js que almacena
 * las instrucciones de contenido dinamico en lenguaje JavaScript.
 */
    public function SetUrlJs($js){
        if (Core::ValidacionBasica($js)) {
            // si es correcto, pasamos a la siguiente validacion,
            // sino se anuncia el error en else
        }else {
            Core::MsgError("Error, no puede especificar como vacia la "
                ."URL de la librería de JavaScript");
            return false;
        }

        if (Core::ValidarExtension($js,"js")) {
            // pasamos a la siguiente validacion
        }else {
            Core::MsgError("Error, el parametro de SetUrlJs() debe poseer"
                ." la extensión '.js'.");
            return false;
        }
        $this->UrlJs="\n<script type='text/javascript' src='$js'></script>";
        return true;
        /*
        if (Core::ValidarExistencia($js)) {
            // Asignamos el valor a la variable
            $this->UrlJs="\n<script type='text/javascript' src='$js'></script>";
            return true;
        }else {
            Core::MsgError("Error, NO EXISTE el archivo '$js'.");
            return false;
        }*/

    }

    /**
     *
     * @param <type> $js
     * @return <type> boolean
     */
    public function AddUrlJs($js){
        if (Core::ValidacionBasica($js)) {
            // si es correcto, pasamos a la siguiente validacion,
            // sino se anuncia el error en else
        }else {
            Core::MsgError("Error, no puede especificar como vacia la "
                ."URL de la librería de JavaScript");
            return false;
        }
/*
        if (Core::ValidarExtension($js,"js")) {
            // pasamos a la siguiente validacion
        }else {
            Core::MsgError("Error, el parametro de AddUrlJs() debe poseer"
                ." la extensión '.js'.");
            return false;
        }
*/
        if (Core::ValidarExistencia($js)) {
            // Asignamos el valor a la variable
            $this->UrlJs.="\n<script type='text/javascript' src='$js'></script>";
            return true;
        }else {
            Core::MsgError("Error, NO EXISTE el archivo '$js'.");
            return false;
        }

    }

/**
 *
 * @return <type> string
 */
    public function GetUrlJs(){
        return $this->UrlJs;
    }

    public function SetUrlCss($css,$media="screen"){
        if (Core::ValidacionBasica($css)) {
            // si es correcto pasamos a la siguiente estructura
        }else {
            Core::MsgError("Error, no puede especificar como vacia la "
                ."URL de la librería de Hojas de Estilos en Cascada (CSS).");
            return false;
        }

        if (Core::ValidarExtension($css,"css")) {
            // si es correcto pasamos a la siguiente estructura
        }else {
            Core::MsgError("Error, la extencion del atributo pasado al metodo "
                ."SetUrlCss() es incorrecta. Los archivos de Hojas de Estilo "
                ."en Cascada son extención '.css'.");
            return false;
        }
        $this->UrlCss="\n<link rel='stylesheet' href='$css' type='text/css' media='$media' />";
        return true;
        /*
        if (Core::ValidarExistencia($css)) {
            $this->UrlCss="\n<link rel='stylesheet' href='$css' type='text/css' media='$media' />";
            return true;
        }else {
            Core::MsgError("Error, no existe el archivo '$css'.");
            return false;
        }
        */

    }
/**
 *
 * @param <type> $css
 * @param <type> $media
 * @return <type> boolean
 */
    public function AddUrlCss($css,$media="screen"){
        if (Core::ValidacionBasica($css)) {
            // si es correcto pasamos a la siguiente estructura
        }else {
            Core::MsgError("Error, no puede especificar como vacia la "
                ."URL de la librería de Hojas de Estilos en Cascada (CSS).");
            return false;
        }
/*
        if (Core::ValidarExtension($css,"css")) {
            // si es correcto pasamos a la siguiente estructura
        }else {
            Core::MsgError("Error, la extencion del atributo pasado al metodo "
                ."AddUrlCss() es incorrecta. Los archivos de Hojas de Estilo "
                ."en Cascada son extención '.css'.");
            return false;
        }
*/
        if (Core::ValidarExistencia($css)) {
            $this->UrlCss.="\n<link rel='stylesheet' href='$css' type='text/css' media='$media' />";
            return true;
        }else {
            Core::MsgError("Error, no existe el archivo '$css'.");
            return false;
        }

    }
/**
 *
 * @return <type> string
 */
    public function GetUrlCss(){
        return $this->UrlCss;
    }

    public function SetMetaTitle(){

    }

    public function GetMetaTitle(){

    }

    public function SetMetaKeywords(){

    }

    public function GetMetaKeywords(){

    }

    public function SetDescription(){

    }

    public function GetDescription(){

    }

    public function SetMetaDCLanguage(){

    }

    public function GetMetaDCLanguage(){

    }

    public function SetMetaClassification(){

    }

    public function GetMetaClassification(){

    }

    public function SetMetaPragma(){

    }

    public function GetMetaPragma(){

    }

    public function SetMetaRevisit(){

    }

    public function GetMetaRevisit(){

    }

    public function SetMetaExpires(){

    }

    public function GetMetaExpires(){

    }

    public function SetMetaRefresh(){

    }

    public function GetMetaRefresh(){

    }

    public function SetMetaSetCookie(){

    }

    public function GetMetaSetCookie(){

    }

    public function SetMetaMail(){

    }

    public function GetMetaMail(){

    }

    public function SetMetaAuthor(){

    }

    public function GetMetaAuthor(){

    }

    public function SetMetaRobots(){

    }

    public function GetMetaRobots(){

    }

    /**
     * se debe indicar entre otros valores el estado de publicacion del enlace
     */
    public function NuevoEnlace(){

    }

    public function EditarEnlace(){

    }

    public function BorrarEnlace(){

    }

    public function NuevaPublicacion(){

    }

    public function EditarPublicacion(){

    }

    public function BorrarPublicacion(){
        
    }
/**
 * Este método añade a la página el tag 'link' especifico para asociar la
 * hoja de estilo requerida por la clase cuyo objeto instanciado se pase por
 * parámetro. Es una forma de ahorrar escritura de código, se puede invocar
 * cuantas veces se requiera. Incluso se puede invocar de forma inmediata
 * mientras se crea una instancia de la clase Pagina, de forma que ahorra mucha
 * escritura y aumenta la velocidad de codificación.
 *
 * @param Object $objeto Debe haber sido instanciado de una clase que posea un
 * archivo de estilo (.css) con el nombre de la clase.
 * @return Boolean True si el parametro es un objeto y existe el archivo .css
 * con el nombre de la clase que instanció al objeto pasado.
 *
 * Ejemplo de uso 1:
 * -----------------------------------------------------------------------------
 * $contenido="<hr><h1>Prueba de método 'Pagina::AddClassCss()'</h1><hr>";
 * $upload=new Archivo();
 * $test=new Pagina();
 * $test->AddClassCss($upload);
 * $contenido.=$upload->FormUp();
 * $test->Publicar($contenido,"Vacia");
 *
 * Ejemplo de uso 2:
 * -----------------------------------------------------------------------------
 * $contenido="<hr><h1>Prueba de método 'Pagina::AddClassCss()'</h1><hr>";
 * $test=new Pagina($upload=new Archivo());
 * $contenido.=$upload->FormUp();
 * $test->Publicar($contenido,"Vacia");
 */
    public function AddClassCss($objeto){
        if (Core::ValidacionBasica($objeto,1)) {
            $clase=get_class($objeto);
            $url="resources/css/class.$clase".".css";
            if (!Core::ValidarExistencia($url)) {
                $url="../".$url;
                if (!Core::ValidarExistencia($url)) {
                $url="../".$url;
                if (!Core::ValidarExistencia($url)) {
                $url="../".$url;
                if (!Core::ValidarExistencia($url)) {
                $url="../".$url;
            }else {
                Core::MsgError("ERROR, el archivo .CSS para la clase "
                    ."'$clase' no existe. Por favor creelo o evite el uso "
                    ."del método 'AddClassCss()'.");
                return false;
            }
            }
            }
            }
            if ($this->AddUrlCss($url)) {
                // continuamos la aplicacion
                return true;
            }
        }else {
            Core::MsgError("ERROR, debe proporcionar un objeto válido al método 'AddClassCss()'.");
            return false;
        }
    }// Fin del metodo

/**
 * Este método añade a la página el tag 'script' especifico para asociar el
 * Script requerido por la clase cuyo objeto instanciado se pase por
 * parámetro. Es una forma de ahorrar escritura de código, se puede invocar
 * cuantas veces se requiera. Incluso se puede invocar de forma inmediata
 * mientras se crea una instancia de la clase Pagina, de forma que ahorra mucha
 * escritura y aumenta la velocidad de codificación.
 *
 * @param Object $objeto Debe haber sido instanciado de una clase que posea un
 * archivo de JavaScript (.js) con el nombre de la clase.
 * @return Boolean True si el parametro es un objeto y existe el archivo .js
 * con el nombre de la clase que instanció al objeto pasado.
 *
 * Ejemplo de uso 1:
 *
 * $contenido="Prueba de método 'Pagina::AddClassJs()'";
 * $upload=new Archivo();
 * $test=new Pagina();
 * $test->AddClassJs($upload);
 * $contenido.=$upload->FormUp();
 * $test->Publicar($contenido,"Vacia");
 *
 * Ejemplo de uso 2:
 *
 * $contenido="Prueba de método 'Pagina::AddClassJs()'";
 * $test=new Pagina($upload=new Archivo());
 * $contenido.=$upload->FormUp();
 * $test->Publicar($contenido,"Vacia");
 */
    public function AddClassJs($objeto){
        if (Core::ValidacionBasica($objeto,1)) {
            $clase=get_class($objeto);
            $url="resources/js/class.$clase".".js";
            if (!Core::ValidarExistencia($url)) {
                $url="../".$url;
                if (!Core::ValidarExistencia($url)) {
                $url="../".$url;
                if (!Core::ValidarExistencia($url)) {
                $url="../".$url;
                if (!Core::ValidarExistencia($url)) {
                $url="../".$url;
            }else {
                Core::MsgError("ERROR, el archivo .JS para la clase "
                    ."'$clase' no existe. Por favor creelo o evite el uso "
                    ."del método 'AddClassJs()'.");
                return false;
            }
            }
            }
            }
            if ($this->AddUrlJs($url)) {
                // continuamos la aplicacion
                return true;
            }
        }else {
            Core::MsgError("ERROR, debe proporcionar un objeto válido al método 'AddClassJs()'.");
            return false;
        }
    }// fin del Metodo

}
?>
